﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Workflow.Activities;

namespace BneyBaruch.Ingest.MorningLesson.WorkflowCommunication.RecordingController
{
    [ExternalDataExchange()]
    public interface IRecordingControllerExchangeService
    {
        #region Events

        event EventHandler<MatrixAdjustmentApprovedEventArgs> MatrixAdjustmentApproved;

        event EventHandler<FileSystemPreparationReportEventArgs> FileSystemOnRecordingControllerReadyToUse;

        #endregion

        #region Callback/Notify Methods

        /// <summary>
        /// Raises an event to the morning lesson workflow to indicate that a recording controller has check
        ///     a matrix adjustment and approved it.
        /// </summary>
        void NotifyMatrixAdjustmentApproved(Guid workflowInstanceId);

        /// <summary>
        /// Raises an event to the morning lesson workflow to indicate that a recording controller has check and prepare
        ///     a file system before recording.
        /// </summary>
        void NotifyFileSystemBeforeRecordingCommandCompletedOnRecordingController(Guid workflowInstanceId);

        #endregion

        #region Start Communication Methods

        /// <summary>
        /// Send request to recording controller for matrix adjustment approval.
        /// </summary>
        /// <param name="workflowInstanceId"></param>
        void RequestMatrixAdjustment(Guid workflowInstanceId);

        /// <summary>
        /// Send prepare file system before recording command to recording controller.
        /// </summary>
        /// <param name="workflowInstanceId"></param>
        void PrepareFileSystemBeforeRecordingOnRecordingController(Guid workflowInstanceId);

        #endregion
    }
}
